import java.util.*;

/**
 * 合并去重
 */
public class MergeDuplicateRemoval {

    public static void main(String[]args){

        List<String> list_1 = new ArrayList<String>();
        list_1.add("aaa");
        list_1.add("");
        list_1.add("bbb");
        System.out.println("list_1:"+list_1);

        List<String> list_2 = new ArrayList<String>();
        list_2.add("vegeta");
        list_2.add("chenzi");
        list_2.add("aaa");
        System.out.println("list_2:"+list_2);

        //合并
        list_1.addAll(list_2);
        System.out.println("合并:"+list_1);

        //自然排序
        Collections.sort(list_1);

        //高级for
        for (Object obj : list_1) {
            System.out.println("取值: " + obj.toString());
        }

        //方法一：利用前一个和后一个进行equals比较，相同则删除后一个
//        for (int i = 1; i < list_1.size(); i++) {
//            if (list_1.get(i).equals(list_1.get(i-1))) {
//                list_1.remove(i);
//            }
//        }
//        System.out.println("方法一:"+list_1);
//        Iterator it_1 = list_1.iterator();
//        while (it_1.hasNext()){
//            System.out.println(it_1.next());
//        }


        //方法二：利用HashSet去重
        Set set = new HashSet();
        for (Object obj : list_1) {
            set.add(obj.toString());
        }
        System.out.println("方法二:"+set);
        for (Iterator it_2 = set.iterator(); it_2.hasNext();) {
            String object = (String) it_2.next();
            System.out.println(object);
        }

        List<Integer> list3 = new ArrayList<Integer>();
        list3.add(1);
        list3.add(2);
        list3.add(3);
        list3.add(4);

        List<Integer> list4 = new ArrayList<Integer>();
        list4.add(3);
        list4.add(4);
        list4.add(5);
        list4.add(6);

        List<Integer> list5 = new ArrayList<Integer>();
        list5.addAll(list3);
        list5.addAll(list4);

        System.out.println("list5:"+list5);

        //自然排序
        Collections.sort(list5, new Comparator<Integer>() {
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });
        System.out.println("list自然排序:"+list5);


        for (int i = 1; i < list5.size(); i++) {
            if (list5.get(i) == list5.get(i - 1)) {
                list5.remove(i);
            }
        }
        System.out.println("list5去重:"+list5);

        //randomTest();
    }

    public static void randomTest(){
        int max=20;
        int min=10;
        Random random = new Random();
        int s = random.nextInt(max)%(max-min+1) + min;
        System.out.println(s);
    }
}
